using System.Collections;
using UnityEngine;
internal class CoroutineManagerMonoBehaviour : MonoBehaviour
{
}

/// <summary>
/// 脱离monobehaviour运行协程
/// </summary>
public class CoroutineManager
{
    private static CoroutineManagerMonoBehaviour coroutineManagerMonoBehaviour;

    //静态构造函数用于初始化任何静态数据，或执行仅需执行一次的特定操作。
    //将在创建第一个实例或引用任何静态成员之前自动调用静态构造函数。
    static CoroutineManager()
    {
        Init();
    }

    public static void DoCoroutine(IEnumerator routine)
    {
        coroutineManagerMonoBehaviour.StartCoroutine(routine);
    }

    private static void Init()
    {
        var g = new GameObject();
        g.name = "CoroutineMangaer";
        coroutineManagerMonoBehaviour = g.AddComponent<CoroutineManagerMonoBehaviour>();
        GameObject.DontDestroyOnLoad(g);
    }
}